주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
주어진 수들 중 소수의 개수를 출력한다.
소수란? 1과 그 수 자신 이외의 자연수로는 나눌 수 없는 1이 아닌 자연수.
간단하게 소수임을 확인하는 function을 작성하였습니다.
반복문을 사용하여 2 ~ N까지 수로 N을 나눈 나머지를 확인할 수도 있지만 더 간단하게 하는 방법이 있습니다.
N의 제곱근 이하의 수 중에서 약수가 있는지 확인하는 것입니다.
for (int i = 2; i <= Math.sqrt(N); i++) {
if(N%i==0) {
return false;
}
}
저는 위처럼 Math의 method를 이용했습니다.
처음엔 2, 3, 5, 7을 제외하고 2, 3, 5, 7로 나누어지지 않는 수를 소수로 판정하게 하였지만 11x11이나 11x13 같이 소수의 곱을 소수로 판정해서 틀렸습니다.
새로 찾은 방법이 간단해서 마음에 드네요!
감사합니다.
Text by Chaelin. Photographs by Unsplash.